package com.lab.project.visitor.record.enums;

/**
 * 异常枚举
 * code 为两位数 本系统自定义 四位数 取自SDK异常枚举
 *
 * @author wangyanlei
 * @date 2020-07-22
 */
public enum ErrorType {
    /**
     * 访客记录数据保存成功
     */
    MESSAGE_SUCCESS("00", "访客记录数据保存成功"),

    /**
     * 结束访客成功
     */
    END_VISITOR_SUCCESS("01", "结束访客成功"),

    /**
     * 保存失败
     */
    STATUS_ING_ERROR("02", "当前人员存在状态为来访中的记录,保存失败"),

    /**
     * 保存异常
     */
    STATUS_RECORD_ERROR("03", "保存t_visitor_record表异常，请确认id和version 是否正确"),

    /**
     * 盒子连接异常
     */
    SDK_BOX_CONNECT_ERROR("04", "盒子连接异常，请检查网络"),

    /**
     * 人脸面板连接异常
     */
    SDK_GATEWAY_CONNECT_ERROR("05", "人脸面板连接异常，请检查网络"),

    /**
     * 盒子人脸库信息为空
     */
    SDK_BOX_NO_IMAGE_DATABASE("06", "盒子中的人脸库信息为空，请先创建人脸库"),

    /**
     * 盒子删除异常
     */
    SDK_BOX_REMOVE_ERROR("07", "盒子删除异常"),

    /**
     * 人脸面板删除异常
     */
    SDK_GATEWAY_REMOVE_ERROR("08", "人脸面板删除异常"),

    /**
     * 人脸面板添加异常
     */
    SDK_GATEWAY_ADD_ERROR("09", "人脸面板添加异常"),

    /**
     * 系统未知错误
     */
    OTHERS_ERROR("99", "系统未知错误，请联系管理员"),

    /**
     * 未找到对应人员
     */
    NO_PERSON("1201", "未找到对应人员"),

    /**
     * 人脸信息已存在面板中
     */
    FACE_DUPLICATE_PRIMARY_KEY("1202", "人脸信息已存在面板中"),

    /**
     * face image does not contain face
     */
    NO_FACE("1203", "face image does not contain face"),

    /**
     * 面板未知异常
     */
    GATEWAY_UNKNOWN_EXCEPTION("1299", "面板未知异常"),

    /**
     * 连接失败
     */
    BAD_REQUEST("1101", "连接失败"),

    /**
     * 响应异常
     */
    REPOSITORY_NOT_FOUNT("1102", "响应异常"),

    /**
     * 设备网络异常
     */
    DEVICE_REQUEST_ERROR("1003", "设备网络异常"),

    /**
     * 人脸信息已存在
     */
    FACE_ALREADY_EXISTED("1104", "人脸信息已存在"),

    /**
     * 删除人脸异常
     */
    DELETE_FACE_FAILED("1105", "删除人脸异常"),

    /**
     * 盒子未知异常
     */
    BOX_UNKNOWN_EXCEPTION("1199", "盒子未知异常");

    /**
     * 错误码
     */
    String code;

    /**
     * 错误信息
     */
    String message;

    /**
     * 构造方法
     *
     * @param code    code值
     * @param message message值
     */
     ErrorType(String code, String message) {
        // 设置message
        this.message = message;
        // 设置code
        this.code = code;
    }

    /**
     * code get方法
     *
     * @return code值
     */
    public String getCode() {
        // 返回code值
        return code;
    }

    /**
     * code set方法
     *
     * @param code code值
     */
    public void setCode(String code) {
        // 设置code
        this.code = code;
    }

    /**
     * message get方法
     *
     * @return get值
     */
    public String getMessage() {
        // 返回message值
        return message;
    }

    /**
     * message set方法
     *
     * @param message message值
     */
    public void setMessage(String message) {
        // 设置message值
        this.message = message;
    }

    /**
     * 根据code获取message
     *
     * @param code code值
     * @return 信息
     */
    public static String getMessageByCode(String code) {
        // 遍历
        for (ErrorType platformFree : ErrorType.values()) {
            // 判断是否相等
            if (code.equals(platformFree.getCode())) {
                // 返回结果
                return platformFree.getMessage();
            }
        }
        // 返回空
        return null;
    }
}
